package main

import "fmt"

type P struct {
	name string
}

func m0(v [3]int) {
	v[0] = 8
}

func m1(v []int) {
	v[0] = 8
}

func m2(p P) {
	//值传递
	//会复制(拷贝)一份数据, 然后修改
	p.name = "lisi"
}

func m3(p *P) {
	//引用传递
	//传递的是地址
	p.name = "lisi"
}

func main() {
	var v1 = []int{1, 2, 3}
	var v2 = v1
	m1(v1)

	fmt.Println(v1)
	fmt.Println(v2)

	var v3 = [3]int{1, 2, 3}
	m0(v3)
	fmt.Println(v3)

	var pp P = P{"zhangsan"}
	m2(pp)
	fmt.Println(pp)

	m3(&pp)
	fmt.Println(pp)

}
